// 作者：我也想阳光普照
// 链接：https://www.nowcoder.com/discuss/957472
// 来源：牛客网

// public class CityDPI_self {
//     public static void main(String[] args) {
//         Scanner scanner = new Scanner(System.in);
//         while (scanner.hasNextLine()) {
//             int n = Integer.parseInt(scanner.nextLine());
//             List<Node> nodeList = new ArrayList<>();
//             for (int i = 1; i < n; i++) {
//                 String s = scanner.nextLine();
//                 String[] s1 = s.split(" ");
//                 int a = Integer.parseInt(s1[0]);
//                 int b = Integer.parseInt(s1[1]);
//                 nodeList.add(new Node(a, b));
//             }

//             // 移除节点后城市最大DPI
//             int[] maxArray = new int[n + 1];
//             // 最小dpi
//             int min = Integer.MAX_VALUE;
//             // 需要移除的城市
//             for (int i = 1; i <= n; i++) {
//                 //构建并查集
//                 UF uf = new UF(n);
//                 for (Node node : nodeList) {
//                     // 移除的城市不放入并查集中
//                     if (node.a == i || node.b == i) {
//                         continue;
//                     }
//                     uf.unionNode(node.a, node.b);
//                 }
//                 maxArray[i] = uf.getMaxSize();
//                 // 记录最小DPI
//                 min = Math.min(min, maxArray[i]);
//             }
//             StringBuilder sb = new StringBuilder();
//             for (int i = 1; i < maxArray.length; i++) {
//                 if (maxArray[i] == min) {
//                     sb.append(i).append(" ");
//                 }
//             }
//             sb.setLength(sb.length() - 1);
//             System.out.println(sb);
//         }
//     }

//     private static class Node {
//         int a;
//         int b;

//         public Node(int a, int b) {
//             this.a = a;
//             this.b = b;
//         }
//     }

//     private static class UF {
//         int[] uf;
//         int[] size;

//         public UF(int n) {
//             uf = new int[n + 1];
//             size = new int[n + 1];
//             for (int i = 1; i <= n; i++) {
//                 uf[i] = i;
//                 size[i] = 1;
//             }
//         }

//         public void unionNode(int a, int b) {
//             int aRoot = findRoot(a);
//             int bRoot = findRoot(b);
//             if (aRoot == bRoot) {
//                 return;
//             }
//             uf[Math.max(aRoot, bRoot)] = Math.min(aRoot, bRoot);
//             size[Math.min(aRoot, bRoot)] = size[aRoot] + size[bRoot];
//         }

//         private int findRoot(int a) {
//             if (uf[a] != a) {
//                 a = uf[a];
//             }
//             return a;
//         }

//         public int getMaxSize() {
//             int max = 0;
//             for (int i = 1; i < size.length; i++) {
//                 if (size[i] > max) {
//                     max = size[i];
//                 }
//             }
//             return max;
//         }
//     }
// }